/*
    PTA B1020
*/
#include<bits/stdc++.h>
using namespace std;
typedef struct node{
    double n,sum,price; //总重量，总价格，性价比
}node;
bool cmp(node a,node b){
    return a.price>b.price;
}
int main(){
    int n,m;
    cin>>n>>m;
    node no[1005];
    for(int i=0;i<n;i++) cin>>no[i].n;
    for(int i=0;i<n;i++) cin>>no[i].sum,no[i].price=no[i].sum/no[i].n;
    sort(no,no+n,cmp);
    double ans;//要求的总利润
    //!!!!!!! 这个for循环的思想要记住
    for(int i=0;i<n;i++){
        //如果要买的总重量大于某个商品的总重量，就全买，再剩余的重量减去刚刚已经买了的重量
        if(m>no[i].n) ans+=no[i].sum, m-=no[i].n;
        else {
            ans+=m*no[i].price;
            break;
        }
    }
    printf("%.2lf",ans);
    return 0;
}